/**************************************************************
 * 
 * Copyright ? 2014，北京福富软件技术股份有限公司
 * All Rights Reserved.
 * ------------------------------------------------------------
 * 文件名称：JSONData.java
 * 文件摘要：页面使用的Json数据对像类
 * 初始版本：V1.0.0
 * 初始作者：lhong
 * 完成日期：2014-03-01
 * 
 **************************************************************/
package com.util.Json;

import org.json.JSONException;
import org.json.JSONObject;

/**************************************************************************
 * 
 * 类名：JSONData<br>
 * <br>
 * 功能：页面使用的Json数据对像类<br>
 * <br>
 * 作者：lhong 2014-03-01<br>
 * <br>
 * 属性列表：<br>
 * <br>
 * 方法列表：<br>
 * 		...<br>
 * <br>
 * 修改记录：<br>
 * 		日期				修改人			修改说明<br>		
 * 
 **************************************************************************/
public class JSONData {
	
	public JSONObject dateObject = new JSONObject();		//数据存放JSONArray
	
	/**************************************************************************
	 * 
	 * 函数名：public JSONData add(Object o)<br>
	 * <br>
	 * 功能：增加Json数据对像的节点<br>
	 * <br>
	 * 作者：lhong 2014-03-01<br>
	 * <br>
	 * 参数表：<br>
	 * 		Object o			->	值<br>
	 * <br>
	 * 返回值：<br>
	 * 		JSONData			->	Json数据对像<br>
	 * <br>
	 * 修改记录：<br>
	 * 		日期				修改人			修改说明<br>
	 * 
	 **************************************************************************/
	public JSONData add(Object o){
		add(null,o);
		return this;
	}
	
	/**************************************************************************
	 * 
	 * 函数名：public JSONData add(String key,Object o)<br>
	 * <br>
	 * 功能：增加Json数据对像的节点<br>
	 * <br>
	 * 作者：lhong 2014-03-10<br>
	 * <br>
	 * 参数表：<br>
	 * 		String key			->	键<br>
	 * 		Object o			->	值<br>
	 * <br>
	 * 返回值：<br>
	 * 		JSONData			->	Json数据对像<br>
	 * <br>
	 * 修改记录：<br>
	 * 		日期				修改人			修改说明<br>
	 * 
	 **************************************************************************/
	public JSONData add(String key,Object o){
		try {
			if(o instanceof Elem)
				o = ((Elem)o).getJSONObjectByElem();
			dateObject.put(null==key?"JSONData.NULL":key, o);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return this;
	}
	
	/**************************************************************************
	 * 
	 * 函数名：public String toString()<br>
	 * <br>
	 * 功能：将json数据对像转换成字符串<br>
	 * <br>
	 * 作者：lhong 2014-03-01<br>
	 * <br>
	 * 参数表：<br>
	 * <br>
	 * 返回值：<br>
	 * 		String			->	Json数据对像转换的字符串<br>
	 * <br>
	 * 修改记录：<br>
	 * 		日期				修改人			修改说明<br>
	 * 
	 **************************************************************************/
	public String toString(){
		if(dateObject.length()==1){
			if(dateObject.has("JSONData.NULL"))
				try {
					return dateObject.get("JSONData.NULL").toString();
				} catch (JSONException e) {
					e.printStackTrace();
				}
		}
		return dateObject.toString();
	}
	
	/**************************************************************************
	 * 
	 * 函数名：public JSONData addError(String message)<br>
	 * <br>
	 * 功能：加入错误的JSON字符串<br>
	 * <br>
	 * 作者：lhong 2014-05-30<br>
	 * <br>
	 * 参数表：<br>
	 * String msg -> 错误信息<br>
	 * <br>
	 * 返回值：<br>
	 * JSONData -> Json数据对像<br>
	 * <br>
	 * 修改记录：<br>
	 * 日期 修改人 修改说明<br>
	 * 
	 **************************************************************************/
	public JSONData addError(String message){
		JSONObject jObject = new JSONObject();
		try {
			jObject.put("code", "error");
			jObject.put("msg", message);
		} catch (JSONException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return this.add("info",jObject);
	}
	
	/**************************************************************************
	 * 
	 * 函数名：public JSONData addWarning(String message)<br>
	 * <br>
	 * 功能：加入警告的JSON字符串<br>
	 * <br>
	 * 作者：lhong 2014-05-30<br>
	 * <br>
	 * 参数表：<br>
	 * String msg -> 警告信息<br>
	 * <br>
	 * 返回值：<br>
	 * JSONData -> Json数据对像<br>
	 * <br>
	 * 修改记录：<br>
	 * 日期 修改人 修改说明<br>
	 * 
	 **************************************************************************/
	public JSONData addWarning(String message){
		JSONObject jObject = new JSONObject();
		try {
			jObject.put("code", "warning");
			jObject.put("msg", message);
		} catch (JSONException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return this.add("info",jObject);
	}
	
	/**************************************************************************
	 * 
	 * 函数名：public JSONData addSuccess(String message)<br>
	 * <br>
	 * 功能：加入操作成功的JSON字符串<br>
	 * <br>
	 * 作者：lhong 2014-05-30<br>
	 * <br>
	 * 参数表：<br>
	 * String msg -> 操作成功信息<br>
	 * <br>
	 * 返回值：<br>
	 * JSONData -> Json数据对像<br>
	 * <br>
	 * 修改记录：<br>
	 * 日期 修改人 修改说明<br>
	 * 
	 **************************************************************************/
	public JSONData addSuccess(String message){
		JSONObject jObject = new JSONObject();
		try {
			jObject.put("code", "success");
			jObject.put("msg", message);
		} catch (JSONException e) {
			e.printStackTrace();
		}
		return this.add("info",jObject);
	}
}
